package com.jrx.anytxn.transaction.dto.loan;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jrx.anytxn.transaction.dto.common.CommonRes;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName LoanDetailQueryRes
 *  贷款明细查询响应实体
 * @author  Administrator
 * date  2019/8/6 0006
 * @Version V1.0
 **/
public class LoanDetailQueryRes extends CommonRes implements Serializable {

    /**
     * 交易流水号
     */
    private String seqNo;

    /**
     * 贷款金额
     */
    private BigDecimal loanAmount;

    /**
     * 贷款用途
     */
    private String loanUse;

    /**
     * 使用中的金额
     */
    private BigDecimal usingAmount;

    /**
     * 贷款期数单位
     */
    private String loanTenorUnit;

    /**
     * 贷款期数
     */
    private Integer loanTenor;

    /**
     * 已还期数
     */
    private String payedTenor;

    /**
     * 当前期数
     */
    private Integer currentTenor;

    /**
     * 合同开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date loanBeginDate;

    /**
     * 合同结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date loanEndDate;

    /**
     *还款方式
     */
    private String amortMethodCode;

    /**
     * 还款方式描述
     */
    private String amortMethodDesc;

    /**
     * 已还本金
     */
    private BigDecimal paidPrincipalAmount;

    /**
     * 已还利息
     */
    private BigDecimal paidInterestAmount;

    /**
     * 已还罚息/费
     */
    private BigDecimal paidPenaltyAmount;

    /**
     * 已还复利
     */
    private BigDecimal paidCompoundInterest;

    /**
     * 已还费用
     */
    private BigDecimal paidFeeAmount;

    /**
     * 贷款状态
     */
    private String accountStatus;

    /**
     * 业务日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date businessDate;

    /**
     * 	日利率
     */
    private BigDecimal dailyRate;

    /**
     * 	年利率
     */
    private BigDecimal yearRate;

    /**
     * 	年利率基准因子
     */
    private Integer yearBase;

    /**
     * 	月利率基准因子
     */
    private Integer monthBase;

    /**
     * 	LPR利率
     */
    private BigDecimal loanPrimeRate;

    /**
     * 罚息日利率
     */
    private BigDecimal penaltyDailyRate;

    /**
     * 罚息年利率
     */
    private BigDecimal penaltyYearRate;

    /**
     * 	罚息利率上浮方式
     */
    private String penaltyIncreaseType;

    /**
     * 罚息利率上浮数值
     */
    private BigDecimal penaltyIncreaseNum;

    /**
     * 合同号
     */
    private String 	contractId;

    /**
     * 外部合同号
     */
    private String contractNumber;

    /**
     * 订单总欠款
     */
    private BigDecimal totalDebtAmount = BigDecimal.ZERO;

    /**
     * 逾期金额
     */
    private BigDecimal delqAmnt = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);

    /**
     * 交易时间
     */
    private String txnTime;//交易时间

    /**
     * 是否支持当日借当日还 0 =不支持 1= 支持
     * @return
     */
    private String loanDayPayFlag;

    /**
     * 商户id
     */
    private String merchantId;

    /**
     * 商户名称
     */
    private String merchantName;

    /**
     * 订单描述
     */
    private String description;

    /**
     * 入帐日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date postingDate;

    /**
     * 客户权益id
     */
    private Long custRightId;

    /**
     * 权益名称
     */
    private String rightsName;

    /**
     * 还款日
     */
    private Integer paymentDateDd;

    /**
     * 放款最终状态(S=成功  F=失败 O=其他未知)
     */
    private String disbursementStatus;
    /**
     * 结清日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date payoffDate;

    public BigDecimal getPenaltyYearRate() {
        return penaltyYearRate;
    }

    public void setPenaltyYearRate(BigDecimal penaltyYearRate) {
        this.penaltyYearRate = penaltyYearRate;
    }

    public String getSeqNo() {
        return seqNo;
    }

    public void setSeqNo(String seqNo) {
        this.seqNo = seqNo;
    }

    public BigDecimal getLoanAmount() {
        return loanAmount;
    }

    public void setLoanAmount(BigDecimal loanAmount) {
        this.loanAmount = loanAmount;
    }

    public String getLoanUse() {
        return loanUse;
    }

    public void setLoanUse(String loanUse) {
        this.loanUse = loanUse;
    }

    public BigDecimal getUsingAmount() {
        return usingAmount;
    }

    public void setUsingAmount(BigDecimal usingAmount) {
        this.usingAmount = usingAmount;
    }

    public String getLoanTenorUnit() {
        return loanTenorUnit;
    }

    public void setLoanTenorUnit(String loanTenorUnit) {
        this.loanTenorUnit = loanTenorUnit;
    }

    public Integer getLoanTenor() {
        return loanTenor;
    }

    public void setLoanTenor(Integer loanTenor) {
        this.loanTenor = loanTenor;
    }

    public Integer getCurrentTenor() {
        return currentTenor;
    }

    public void setCurrentTenor(Integer currentTenor) {
        this.currentTenor = currentTenor;
    }

    public Date getLoanBeginDate() {
        return loanBeginDate;
    }

    public void setLoanBeginDate(Date loanBeginDate) {
        this.loanBeginDate = loanBeginDate;
    }

    public Date getLoanEndDate() {
        return loanEndDate;
    }

    public void setLoanEndDate(Date loanEndDate) {
        this.loanEndDate = loanEndDate;
    }

    public String getAmortMethodCode() {
        return amortMethodCode;
    }

    public void setAmortMethodCode(String amortMethodCode) {
        this.amortMethodCode = amortMethodCode;
    }

    public String getAmortMethodDesc() {
        return amortMethodDesc;
    }

    public void setAmortMethodDesc(String amortMethodDesc) {
        this.amortMethodDesc = amortMethodDesc;
    }

    public BigDecimal getPaidPrincipalAmount() {
        return paidPrincipalAmount;
    }

    public void setPaidPrincipalAmount(BigDecimal paidPrincipalAmount) {
        this.paidPrincipalAmount = paidPrincipalAmount;
    }

    public BigDecimal getPaidInterestAmount() {
        return paidInterestAmount;
    }

    public void setPaidInterestAmount(BigDecimal paidInterestAmount) {
        this.paidInterestAmount = paidInterestAmount;
    }

    public BigDecimal getPaidPenaltyAmount() {
        return paidPenaltyAmount;
    }

    public void setPaidPenaltyAmount(BigDecimal paidPenaltyAmount) {
        this.paidPenaltyAmount = paidPenaltyAmount;
    }

    public BigDecimal getPaidFeeAmount() {
        return paidFeeAmount;
    }

    public void setPaidFeeAmount(BigDecimal paidFeeAmount) {
        this.paidFeeAmount = paidFeeAmount;
    }

    public BigDecimal getPaidCompoundInterest() {
        return paidCompoundInterest;
    }

    public void setPaidCompoundInterest(BigDecimal paidCompoundInterest) {
        this.paidCompoundInterest = paidCompoundInterest;
    }

    public String getAccountStatus() {
        return accountStatus;
    }

    public void setAccountStatus(String accountStatus) {
        this.accountStatus = accountStatus;
    }

    public Date getBusinessDate() {
        return businessDate;
    }

    public void setBusinessDate(Date businessDate) {
        this.businessDate = businessDate;
    }

    public BigDecimal getDailyRate() {
        return dailyRate;
    }

    public void setDailyRate(BigDecimal dailyRate) {
        this.dailyRate = dailyRate;
    }

    public BigDecimal getYearRate() {
        return yearRate;
    }

    public void setYearRate(BigDecimal yearRate) {
        this.yearRate = yearRate;
    }

    public Integer getYearBase() {
        return yearBase;
    }

    public void setYearBase(Integer yearBase) {
        this.yearBase = yearBase;
    }

    public Integer getMonthBase() {
        return monthBase;
    }

    public void setMonthBase(Integer monthBase) {
        this.monthBase = monthBase;
    }

    public BigDecimal getLoanPrimeRate() {
        return loanPrimeRate;
    }

    public void setLoanPrimeRate(BigDecimal loanPrimeRate) {
        this.loanPrimeRate = loanPrimeRate;
    }

    public BigDecimal getPenaltyDailyRate() {
        return penaltyDailyRate;
    }

    public void setPenaltyDailyRate(BigDecimal penaltyDailyRate) {
        this.penaltyDailyRate = penaltyDailyRate;
    }

    public String getPenaltyIncreaseType() {
        return penaltyIncreaseType;
    }

    public void setPenaltyIncreaseType(String penaltyIncreaseType) {
        this.penaltyIncreaseType = penaltyIncreaseType;
    }

    public BigDecimal getPenaltyIncreaseNum() {
        return penaltyIncreaseNum;
    }

    public void setPenaltyIncreaseNum(BigDecimal penaltyIncreaseNum) {
        this.penaltyIncreaseNum = penaltyIncreaseNum;
    }

    public String getContractId() {
        return contractId;
    }

    public void setContractId(String contractId) {
        this.contractId = contractId;
    }

    public String getContractNumber() {
        return contractNumber;
    }

    public void setContractNumber(String contractNumber) {
        this.contractNumber = contractNumber;
    }

    public BigDecimal getTotalDebtAmount() {
        return totalDebtAmount;
    }

    public void setTotalDebtAmount(BigDecimal totalDebtAmount) {
        this.totalDebtAmount = totalDebtAmount;
    }

    public String getTxnTime() {
        return txnTime;
    }

    public void setTxnTime(String txnTime) {
        this.txnTime = txnTime;
    }

    public String getLoanDayPayFlag() {
        return loanDayPayFlag;
    }

    public void setLoanDayPayFlag(String loanDayPayFlag) {
        this.loanDayPayFlag = loanDayPayFlag;
    }

    public String getMerchantId() {
        return merchantId;
    }

    public void setMerchantId(String merchantId) {
        this.merchantId = merchantId;
    }

    public String getMerchantName() {
        return merchantName;
    }

    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getPostingDate() {
        return postingDate;
    }

    public void setPostingDate(Date postingDate) {
        this.postingDate = postingDate;
    }

    public Long getCustRightId() {
        return custRightId;
    }

    public void setCustRightId(Long custRightId) {
        this.custRightId = custRightId;
    }

    public String getRightsName() {
        return rightsName;
    }

    public void setRightsName(String rightsName) {
        this.rightsName = rightsName;
    }

    public Integer getPaymentDateDd() {
        return paymentDateDd;
    }

    public void setPaymentDateDd(Integer paymentDateDd) {
        this.paymentDateDd = paymentDateDd;
    }

    /**
     * 获取 放款最终状态(S=成功  F=失败 O=其他未知)
     *
     * @return disbursementStatus 放款最终状态(S=成功  F=失败 O=其他未知)
     */
    public String getDisbursementStatus() {
        return this.disbursementStatus;
    }

    /**
     * 设置 放款最终状态(S=成功  F=失败 O=其他未知)
     *
     * @param disbursementStatus 放款最终状态(S=成功  F=失败 O=其他未知)
     */
    public void setDisbursementStatus(String disbursementStatus) {
        this.disbursementStatus = disbursementStatus;
    }

    /**
     * 获取 结清日期
     *
     * @return payoffDate 结清日期
     */
    public Date getPayoffDate() {
        return this.payoffDate;
    }

    /**
     * 设置 结清日期
     *
     * @param payoffDate 结清日期
     */
    public void setPayoffDate(Date payoffDate) {
        this.payoffDate = payoffDate;
    }

    /**
     * 获取 逾期金额
     *
     * @return delqAmnt 逾期金额
     */
    public BigDecimal getDelqAmnt() {
        return this.delqAmnt;
    }

    /**
     * 设置 逾期金额
     *
     * @param delqAmnt 逾期金额
     */
    public void setDelqAmnt(BigDecimal delqAmnt) {
        this.delqAmnt = delqAmnt;
    }

    /**
     * 获取 已还期数
     *
     * @return payedTenor 已还期数
     */
    public String getPayedTenor() {
        return this.payedTenor;
    }

    /**
     * 设置 已还期数
     *
     * @param payedTenor 已还期数
     */
    public void setPayedTenor(String payedTenor) {
        this.payedTenor = payedTenor;
    }
}
